<html>

<head>
  <title>AccessFu test for enabling</title>

  <link rel="stylesheet" type="text/css"
        href="chrome://mochikit/content/tests/SimpleTest/test.css" />
  <script type="application/javascript"
          src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
  <script type="application/javascript"
          src="../common.js"></script>
  <script type="application/javascript"
          src="./jsatcommon.js"></script>
  <script type="application/javascript">

    function prefStart() {
      AccessFuTest.once_log("AccessFu:Enabled", () =>
        ok(AccessFu._enabled, "AccessFu was enabled again."));
      AccessFuTest.once_log("EventManager.start", AccessFuTest.nextTest);
      // Start AccessFu via pref.
      SpecialPowers.pushPrefEnv({"set": [['accessibility.accessfu.activate', 1]]});
    }

    // Listen for 'EventManager.stop' and enable AccessFu again.
    function settingsStart() {
      isnot(AccessFu._enabled, true, "AccessFu was disabled.");
      // XXX: Bug 978076 - test start with SettingsManager.
      //navigator.mozSettings.createLock().set(
      //  {'accessibility.screenreader': false});
      AccessFuTest.once_log("EventManager.start", () => {
        ok(AccessFu._enabled, "AccessFu was enabled again.");
        AccessFuTest.nextTest();
      });
      AccessFu._enable();
    }

    // Make sure EventManager is started again.
    function settingsStop() {
      ok(AccessFu._enabled, "AccessFu was enabled again.");
      // XXX: Bug 978076 - test stop with SettingsManager.
      //navigator.mozSettings.createLock().set(
      //  {'accessibility.screenreader': false});
      AccessFuTest.once_log("EventManager.stop", () => {
        isnot(AccessFu._enabled, "AccessFu was disabled.");
        AccessFuTest.finish();
      });
      AccessFu._disable();
    }

    // Listen for initial 'EventManager.start' and disable AccessFu.
    function prefStop() {
      ok(AccessFu._enabled, "AccessFu was started via preference.");
      AccessFuTest.once_log("AccessFu:Disabled", () =>
        isnot(AccessFu._enabled, true, "AccessFu was disabled."));
      AccessFuTest.once_log("EventManager.stop", AccessFuTest.nextTest);

      SpecialPowers.pushPrefEnv({"set": [['accessibility.accessfu.activate', 0]]});
    }

    function doTest() {
      AccessFuTest.addFunc(prefStart);
      AccessFuTest.addFunc(prefStop);
      AccessFuTest.addFunc(settingsStart);
      AccessFuTest.addFunc(settingsStop);
      AccessFuTest.waitForExplicitFinish();
      AccessFuTest.runTests();  // Will call SimpleTest.finish();
    }

    SimpleTest.waitForExplicitFinish();
    addA11yLoadEvent(doTest);
  </script>

</head>
<body>
  <a target="_blank"
     href="https://bugzilla.mozilla.org/show_bug.cgi?id=811307"
     title="[AccessFu] Add mochitest for enabling">
    Mozilla Bug 811307
  </a>
</body>
</html>
